package com.theima.innerclassdemo.test1;

/**
 * @program: 内部类之成员内部类
 * @description:
 * @author: xuejingjing
 * @create: 2021-06-13 12:10
 **/

/**
 * 内部类的访问特点
 * 内部类可以直接访问外部类的成员，包括私有
 * 外部类要访问内部类的成员，必须创建对象
 */
public class TestInner {
    public static void main(String[] args) {
/**
 * 创建内部类对象的格式
 *
 * 外部类名.内部类名  对象名 = new 外部对象名().new 内部对象名();
 */


     Outer.Inner i = new Outer().new Inner();
     System.out.println(i.num);


    }

}

class Outer{

    //被private私有的，只能在本类中访问（本类指的是Outer类）
    private int  a = 20;
    class Inner{
        //[个人理解]default 本类中可访问，或者同一个包可访问。
        int num = 10;
        public void  show(){
            System.out.println("Inner show");
            //内部类，访问外部类成员，可以直接访问，报错私有，因为private的作用范围是本类中，很明显覆盖到了。

            System.out.println(a);
        }
    }
}

//class Outer2{
//    class Inner(){
//
//    }
//}

